/*
描述
原理：ip地址的每段可以看成是一个0-255的整数，把每段拆分成一个二进制形式组合起来，然后把这个二进制数转变成
一个长整数。
举例：一个ip地址为10.0.3.193
每段数字             相对应的二进制数
10                   00001010
0                    00000000
3                    00000011
193                  11000001

组合起来即为：00001010 00000000 00000011 11000001,转换为10进制数就是：167773121，即该IP地址转换后的数字就是它了。

数据范围：保证输入的是合法的 IP 序列

输入描述：
输入 
1 输入IP地址
2 输入10进制型的IP地址

输出描述：
输出
1 输出转换成10进制的IP地址
2 输出转换后的IP地址
*/

/*
输入：
10.0.3.193
167969729
复制
输出：
167773121
10.3.3.193
*/

let ip = '10.0.3.193'
let num = '167969729'

function toNum(ip) {
    let num = ip.split('.').map(ele => Number(ele).toString(2)).map(ele => ele.padStart(8, 0))
    num = num.join('')
    console.log(parseInt(num,2))
}

function toIp(num) {
    let num32 = Number(num).toString(2).padStart(32, '0')
    let arr = [num32.slice(0,8),num32.slice(8,16),num32.slice(16,24),num32.slice(24,32)]
    console.log(arr)
    let res = arr.map(ele => parseInt(ele, 2)).join('.')
    console.log(res)
}

toNum(ip)
toIp(num)